import random
class Dados:
	def __init__(self):
		self.dados=[]
		
	def mostrarDados(self):
		dados=[]
		for i in self.dados:
			dados.append(i.mostrar())
		return dados
	
	def ponerDados(self,dado):
		self.dados.append(dado)
	def tirarDados(self):
		tiradas= []
		for i in self.dados:
			tiradas.append(i.tirar())
		return tiradas

class Dado:
	def __init__(self):
		self.numero=0
	def tirar(self):
		self.numero=random.randrange(1,7)
		return self.numero
	def mostrar(self):
		return self.numero

class Jugador: #la clase del jugador que contiene su nombre y los puntajes que realiza
	def __init__(self,nombre):
		self.nombre= nombre
		self.puntaje= [1,0,0,0,0,0,0,0,0,0] #posicion ordenada de todos los puntajes de la generala
		self.puntos= 0
	def puntaje(self,puntaje):
		for i in self.puntaje:
			puntos= puntos+ i
	def mostrarPuntaje(self):
		return self.puntaje
	def setPuntaje(self,pos,puntos):
		self.puntaje[pos]= puntos
	def mostrarPuntos(self):
		return self.puntos
	def mostrarNombre(self):
		return self.nombre

class interfaz():
	def empezar(self):#menu para cargar los 3 jugadores y jugar
		ejec=raw_input ("Ingrese nombre de los jugadores y luego comience a jugar? (i=ingresar y jugar / e=salir): ")	
		while ejec!="e":
			if ejec=="i" or ejec=="I":
				self.Jugar()
			else:
				print "entrada incorrecta"
			ejec=raw_input ("Ingrese nombre de los jugadores y luego comience a jugar(i=ingresar y jugar / e=salir): ")	

		
	def Jugar(self):	#el juego de la generala
		lista=[1,2,3]
		jugadores=[]
		for i in lista:	
			nomb=raw_input("ingrese nombre: ")		
			a=Jugador(nomb)
			jugadores.append(a)			
		dado1=Dado()
		dado2=Dado()
		dado3=Dado()
		dado4=Dado()
		dado5=Dado()
		tdados=Dados()
		tdados.ponerDados(dado1)
		tdados.ponerDados(dado2)
		tdados.ponerDados(dado3)
		tdados.ponerDados(dado4)
		tdados.ponerDados(dado5)
		turno= 1
		win= False
		while win!=True:
			if turno==1:
				print ("Jugador" , jugadores[0].mostrarNombre())
				tdados.tirarDados()
				res=tdados.mostrarDados()
				print ("tirar dados: " , res)
				x=raw_input("desea tirar dados otra vez o sumar algun puntaje:  1=tirar dados / 2=sumar puntaje: ")
				tiros=1
				while x!="2":
					tdados.tirarDados()
					res=tdados.mostrarDados()
					print ("tirar dados: " , res)
					x=raw_input("desea tirar dados otra vez o sumar algun puntaje:  1=tirar dados / 2=sumar puntaje: ")
					tiros=2					
				puntos=raw_input("que eliges: (1 / 2 / 3 / 4 / 5 / 6 / escalera / full / poker / generala / gendoble): ")
				if puntos=="1" and jugadores[0].mostrarPuntaje()[0]==0:
					unos=0
					for i in res:
						if i==1:
							unos=unos+i
					jugadores[0].setPuntaje(1,unos)
					turno=2
				elif puntos=="2":
					dos=0
					for i in res:
						if i==2:
							dos=dos+i
					jugadores[0].setPuntaje(2,dos)
					turno=2
				elif puntos=="3":
					tres=0
					for i in res:
						if i==3:
							tres=tres+i
					jugadores[0].setPuntaje(3,tres)
					turno=2
				elif puntos=="4":
					cuatro=0
					for i in res:
						if i==4:
							cuatro=cuatro+i
					jugadores[0].setPuntaje(4,cuatro)
					turno=2
				elif puntos=="5":
					cinco=0
					for i in res:
						if i==5:
							cinco=cinco+i
					jugadores[0].setPuntaje(5,cinco)
					turno=2
				elif puntos=="6":
					seis=0
					for i in res:
						if i==6:
							seis=seis+i
					jugadores[0].setPuntaje(6,seis)
					turno=2
				else:
					print "ya has elegido ese puntaje"				
			elif turno==2:
				print ("Jugador" , jugadores[1].mostrarNombre())
				print ("tirar dados: " , tdados.tirarDados())
				turno= 3
			elif turno==3:
				print ("Jugador" , jugadores[2].mostrarNombre())
				print ("tirar dados: " , tdados.tirarDados())
				turno=1
				break

programa=interfaz()
programa.empezar()
